/*
*	Project: Aethon
*
*	File: Quaternion.h
*
*	Author: Jonathan Hersack
*
*	Date: 2/15/2009
*
*   Purpose: defines quaternion for use with control and eye rotations.
*	Based on NEHE Productions tutorial.
*	http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=Quaternion_Camera_Class
*/

#ifndef QUATERNION_H_
#define QUATERNION_H_

#include <iostream>
#include "vector3f.h"
#include <GL/glut.h>
#include <math.h>
using namespace std;
const float PI = 3.14159;
class Quaternion{

    float W;
	float Z;
	float Y;
	float X;

	public:
	//constructors
	Quaternion()
	{
		X = 0.0;
		Y = 0.0;
		Z = 0.0;
		W = 1.0;
	}//end constructor
	
	void CreateMatrix(float *matrix);
	void CreateFromAxisAngle(float x, float y, float z, float degrees);
	Quaternion operator *(Quaternion q);
	
};//end class

#endif //Quaternion_H_

